function isPalindrome(s) {
  // 清理字符串：移除非字母数字字符并转换为小写
  const cleanedStr = s.replace(/[^a-zA-Z0-9]/g, "").toLowerCase();

  // 初始化双指针
  let left = 0;
  let right = cleanedStr.length - 1;

  // 遍历字符串
  while (left < right) {
    // 比较左右指针指向的字符
    if (cleanedStr[left] !== cleanedStr[right]) {
      return false; // 如果不相等，则不是回文
    }
    // 移动指针
    left++;
    right--;
  }

  return true; // 如果遍历完所有字符都相等，则是回文
}

// 示例用法
console.log(isPalindrome("radar")); // 输出: true
console.log(isPalindrome("hello")); // 输出: false
console.log(isPalindrome("A man, a plan, a canal, Panama")); // 输出: true
console.log(isPalindrome("No 'x' in Nixon")); // 输出: true
